/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Almacenamiento.TAREA_LABORATORIO6;

import Almacenamiento.Atributo;
import Almacenamiento.Relacion;
import Almacenamiento.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.io.*;

/**
 *

 * @author User
 */
public class TAREA1 {
    
    public void  main (String[] Args) throws FileNotFoundException, IOException
    {
    
            // Crear el archivo de la relación
            String nombreArchivo = "D:/prueba/relacion.dat";
            // Crear un esquema de relación.    
            List<Atributo> attrs = new ArrayList<Atributo>();
            attrs.add(new Atributo("character", Character.class));
            attrs.add(new Atributo("byte", Byte.class));
            attrs.add(new Atributo("short", Short.class));
            attrs.add(new Atributo("integer", Integer.class));
            attrs.add(new Atributo("long", Long.class));
            attrs.add(new Atributo("float", Float.class));
            attrs.add(new Atributo("double", Double.class));
            attrs.add(new Atributo("string", String.class));
            // Esquema de relación
            Relacion esquema_relacion = new Relacion(attrs);
            // Crear una lista de valores de tupla
          
            // creamos n tuplas
             Random r = new  Random();
            int n = r.nextInt(100);
            Tupla t1 ;
            Pagina p1;
           
            List<Comparable> v = new ArrayList<Comparable>();
            
            // crear tuplas de la relación
            
                IdentificadorPagina pid1 = new IdentificadorPagina(nombreArchivo, 0);
                t1= new Tupla(new IdentificadorTupla(nombreArchivo, 0),v);
                p1= new Pagina(esquema_relacion, pid1);
                
             java.io.RandomAccessFile raf = 
                    new java.io.RandomAccessFile(nombreArchivo, "rw");
             byte[] bytes = new byte[15000];

            int k =0;
            int l =0;
            int [] des= new int[n];
                
            //Tupla t2 = new Tupla(new IdentificadorTupla(nombreArchivo, 1), v);
              // Crear 2 páginas de disco
            // Crear un id de página
            //IdentificadorPagina pid1 = new IdentificadorPagina(nombreArchivo, 0);
            //Pagina p1 = new Pagina(esquema_relacion, pid1);
            //IdentificadorPagina pid2 = new IdentificadorPagina(nombreArchivo, 1);
            //Pagina p2 = new Pagina(esquema_relacion, pid2);
             for (int i = 0; i < n; i++) {
                 
//            List<Comparable> v = new ArrayList<Comparable>();
            v.add(new Character('a'));
            v.add(new Byte((byte) 26));
            v.add(new Short((short) 312));
            v.add(new Integer(2048));
            v.add(new Long(34567));
            v.add(new Float(12.3));
            v.add(new Double(25.6));
            v.add(new String("bla bla"));
            
            
            t1= new Tupla(new IdentificadorTupla(nombreArchivo, 0), v);
            p1= new Pagina(esquema_relacion, pid1);
            
            
            p1.adicionarTupla(t1);
            //p2.adicionarTupla(t2);
            // Mostrar las páginas creadas en pantalla
            System.out.println(p1);
            //System.out.println(p2);
            // Almacenar en disco las páginas
            // Abrir en modo de lectura y escritura el archivo de la relación
           
            // Escribir las páginas en el archivo de la relación
            System.out.println("Escribiendo paginas ...");
            GestorIOPagina_t.escribirPagina(raf, p1);
            //GestorIOPagina_t.escribirPagina(raf, p2);
            // cerrar archivo
            raf = new java.io.RandomAccessFile(nombreArchivo, "r");
            System.out.println("leyendo paginas...");

            Pagina pagina1 = 
                    GestorIOPagina_t.leerPagina(esquema_relacion, 
                    new IdentificadorPagina(nombreArchivo, 0), raf);
            //Pagina pagina2 = 
                    //GestorIOPagina_t.leerPagina(esquema_relacion, 
                    //new IdentificadorPagina(nombreArchivo, 1), raf);
            // Mostrar las páginas leidas
            System.out.println(pagina1);
            //man.escribirTupla(t, raf);
            
               //k = t1.escribirTupla(t1, bytes, k);
                l++;
                des[i] = k;
            //System.out.println(pagina2);
            
            }
            // añadir tuplas a las páginas
            
            raf.close();

            // Leer la página del disco
            // Abrir el archivo de la relacion en modo de lectura
            /*raf = new java.io.RandomAccessFile(nombreArchivo, "r");
            System.out.println("leyendo paginas...");

            Pagina pagina1 = 
                    GestorIOPagina_t.leerPagina(esquema_relacion, 
                    new IdentificadorPagina(nombreArchivo, 0), raf);
            Pagina pagina2 = 
                    GestorIOPagina_t.leerPagina(esquema_relacion, 
                    new IdentificadorPagina(nombreArchivo, 1), raf);
            // Mostrar las páginas leidas
            System.out.println(pagina1);
            System.out.println(pagina2);
            // cerrar archivo*/
            raf.close();
       
        
}
            }
